<?php
/*
 *	Klasa Application_Router_Standard_Request
 *	Obsługa żądań użytkownika:
 *	- interpretacja danych wejściowych (GET)
 *	- filtrowanie przesłanych danych
 */
 defined("BASEDIR") or die();
 
 class Application_Router_Standard_Request
 {
	// tablica zawierająca przefiltrowane dane od uzytkownika
	private $requestParams = array();
	
	public function __construct()
	{
		
		// Usunięcie / z prawej strony żądania (jeżeli nie zostanie usunięte ostatni argument będzie zawierał null)
		$_GET['pid'] = rtrim($_GET['pid'], '/');
		// Rozbicie żądania GET na poszczególne parametry
        $params = explode(constant("SEPARATOR"), $_GET['pid']);
		// Odczytanie nazwy kontrolera
		$parameters['controller'] = $this->filter(strtolower($params[0]));
		// Odczytanie nazwy akcji
		$parameters['action'] = $this->filter(strtolower($params[1]));
		// Usunięcie pierwszych 2 elementów (kontroler i akcja)
		$params = array_slice($params, 2);
		// Podzielenie pozostałych parametrów w pary (parametr => wartość)
		$params = array_chunk($params, 2);
		foreach($params as $param)
		{
			// Jeżeli wartość parametru nie jest podana to zostaje mu przypisana wartość 1
			if(!isset($param[1])) $param[1] = 1;
			// dołączenie przefiltrowanych informacji do tablicy
			$parameters[$this->filter($param[0])] = $this->filter($param[1]);
		}
		
		// Obsługa wszystkich danych przesłanych przez użytkownika (GET, POST, COOKIE)
		foreach($_REQUEST as $k => $v)
		{
			// przefiltrowanie danych
			$_REQUEST[$k] = $this->filter($v);
		}
		// dołączenie parametrów do tablicy
		$this->requestParams = array_merge($_REQUEST, $parameters);
		
	}
	// Pobieranie danych z tablicy z wynikami
	public function __get($var)
	{
		return $this->requestParams[$var];
	}
	// Zapisywanie danych do tablicy z wynikami
	public function __set($var, $val)
	{
		$this->requestParams[$var] = $this->filter($val);
	}
	// Filrowanie informacji od użytkownika
	protected function filter($var)
	{
		if(!is_array($var))
		{
			$var = strip_tags($var);
			$var = addslashes($var);
			$var = htmlentities($var, ENT_COMPAT, 'UTF-8');
			$var = str_replace("&oacute;", "ó", $var);
		}
		else
		{
			foreach($var as $k => $v)
			{
				$var[$k] = $this->filter($v);
			}
		}
		return $var;
	}
 }
?>